package com.yunnuo.system.comm.entity;


import com.fasterxml.jackson.annotation.JsonFormat;

import javax.persistence.Column;
import javax.persistence.MappedSuperclass;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import java.util.Date;

/**
 * 普通数据库表映射对象持久化类
 *
 * @author wangliang@hotmail.com
 * @date 2012-3-19 下午03:10:14
 * @description 默认包含了主键ID、创建者、创建时间、更新者、更新时间等属性。
 */
@MappedSuperclass
public class ObjectEntity extends IdEntity implements java.util.Comparator<ObjectEntity> {

    private static final long serialVersionUID = 1L;

    // 排序号,默认为：100
    private int orderNum = 100;
    // 状态：1.启用；0.禁用；
    private String state;

    // 对象创建时间
    private Date createTime;

    // 对象最新变更时间
    private Date modifyTime;

    // 对象的创建者
    private String creator;

    // 对象最新修改者
    @Column(length = 32, name = "modifier")
    private String modifier;

    public void setVO(IdEntity entity){
        ObjectEntity vo = (ObjectEntity)entity;
        this.state = vo.getState();
        this.orderNum = vo.getOrderNum();
        this.modifier = vo.getModifier();
        this.modifyTime = vo.getModifyTime();
    }

    /**
     * @return 状态：1.启用；0.禁用；
     */
    public String getState() {
        return state;
    }

    /**
     * @param  ：1.启用；0.禁用；
     */
    public void setState(String state) {
        this.state = state;
    }

    /**
     * @return 排序号,默认为：100
     */
    public int getOrderNum() {
        return orderNum;
    }

    /**
     * @param  orderNum
     *            ,默认为：100
     */
    public void setOrderNum(int orderNum) {
        this.orderNum = orderNum;
    }

    /**
     * @return the 对象的修改者
     */
    public String getModifier() {
        return modifier;
    }

    /**
     * @param modifier
     *            the 对象的修改者 to set
     */
    public void setModifier(String modifier) {
        this.modifier = modifier;
    }

    /**
     * 对象最新变更时间<br>
     * 不用set,hibernate会自动把当前时间写入
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getModifyTime() {
        return modifyTime;
    }

    /**
     *
     * @param
     */
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "modify_time")
    public void setModifyTime(Date modifyTime) {
        this.modifyTime = modifyTime;
    }

    /**
     * @return the 对象的创建者
     */
    @Column(updatable = false, length = 32, name = "creator")
    public String getCreator() {
        return creator;
    }

    /**
     * @param creator
     *            the 对象的创建者 to set
     */
    public void setCreator(String creator) {
        this.creator = creator;
    }

    /**
     * 对象创建时间<br>
     * 不用set,hibernate会自动把当前时间写入
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Temporal(TemporalType.TIMESTAMP)
    @Column(updatable = false, length = 20, name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }

    /**
     *对象创建时间
     * @param
     */
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public int compare(ObjectEntity o1, ObjectEntity o2) {
        return o1.getOrderNum() - o2.getOrderNum();
    }

}
